package com.zs.zcerp.entrance.service;


import com.zs.zcerp.entrance.entity.*;

import java.util.Date;


/**
 * 门禁接口, 与门禁系统通信
 */
public interface IEntranceAccessService {

    /**
     * 创建部门
     * @param dpDept
     * @return
     */
    String CreateDept(DpDept dpDept);

    /**
     * 更新部门
     * @param dpDept
     * @return
     */
    String UpdateDept(DpDept dpDept);

    /**
     * 删除部门
     * @param dpDept
     * @return
     */
    String DeleteDept(DpDept dpDept);

    /**
     * 查询子部门
     * @param dpDept
     * @return
     */
    String GetDeptSub(DpDept dpDept);

    /**
     * 创建职位
     * @param post
     * @return
     */
    String CreatePost(Post post);

    /**
     * 更新职位
     * @param post
     * @return
     */
    String UpdatePost(Post post);

    /**
     * 删除职位
     * @param post
     * @return
     */
    String DeletePost(Post post);

    /**
     * 查询所有职位
     * @return
     */
    String GetPost();

    /**
     * 创建人员
     * @param epMain
     * @return
     */
    String CreateEmp(EpMain epMain);

    /**
     * 更新人员
     * @param epMain
     * @return
     */
    String UpdateEmp(EpMain epMain);

    /**
     * 删除人员
     * @param epMain
     * @return
     */
    String DeleteEmp(EpMain epMain);

    /**
     * 查询人员
     * @param epMain
     * @return
     */
    String GetEmp(EpMain epMain);

    /**
     * 查询部门人员，不包括子部门人员
     * @param deptEmp
     * @return
     */
    String GetDeptEmp(DeptEmp deptEmp);

    /**
     * 创建或更新公司
     */
    void CreateOrUpdateSyorg(Syorg syorg);

    /**
     * 创建或更新部门
     */
    void CreateOrUpdateDpDept(DpDept dpDept) throws Exception;

    /**
     * 创建或更新职位
     */
    void CreateOrUpdatePost(Post post);

    /**
     * 创建或更新员工
     */
    void CreateOrUpdateEmp(EpMain epMain);

    /**
     * 创建或更新上班时间
     * @param attendance
     */
    String UpdateAttendancePlan(Attendance attendance);

    /**
     * 删除部门员工每日上下班时间
     * @param attendance
     */
    String DeleteAttendancePlan(Attendance attendance);

    /**
     * 根据请假时间查询请假单
     * @param status  单据状态，1：审批通过的单据，2：审批未通过的单据，3.审批完成的单据(包括通过，未通过)
     * @param size  分页大小，最大1000
     * @param cursor  分页查询的游标，最开始传0
     * @param startTime  开始时间，格式为：yyyy-MM-dd
     * @param endTime  结束时间，格式为：yyyy-MM-dd
     * @return
     */
    String GetAskLeaveRecord(Integer status, Integer size, Integer cursor, Date startTime, Date endTime);

    /**
     * 根据请假单申请时间查询请假单
     * @param status   单据状态，1：审批通过的单据，2：审批未通过的单据，3.审批完成的单据(包括通过，未通过)
     * @param startTime   开始时间，格式为：yyyy-MM-dd
     * @param endTime   结束时间，格式为：yyyy-MM-dd
     * @param size   分页大小，最大1000
     * @param cursor   分页查询的游标，最开始传0
     * @return
     */
    String GetAskLeaveRecordByApplyTime(Integer status, Date startTime, Date endTime, Integer size, Integer cursor);
}

